package smlab.utils
{
	/**
	 * 数学/公式计算 辅助类
	 * @author simon 汪汪
	 * 
	 */
	public class MathUtils
	{
		public function MathUtils()
		{
		}
		
		/**
		 * 求三角形最长的边
		 * 知道三个角和一条边，求最长的边？
		 * @param length
		 * @param angleA
		 * @param angleB
		 * @param angleC
		 * @return 
		 * 
		 */
		public static function getMaxLength1(length:Number,angleA:Number,angleB:Number,angleC:Number):Number
		{
			return Math.sin( Math.max(angleB,angleC)) * length / Math.sin(angleA);
		}
		/**
		 * 角度换算成弧度 
		 * @param degress 角度
		 * @return 
		 * 
		 */		
		public static function getRadians(degrees:Number):Number
		{
			return degrees * Math.PI / 180 ;
		}
		/**
		 * 弧度换算成角度
		 * @param radians 弧度
		 * @return 
		 * 
		 */		
		public static function getDegrees(radians:Number):Number
		{
			return radians * 180 / Math.PI;
		}
		
		// **** ---------------------------------------
		
		//		adjacent side 		邻边.
		//		hypotenuse 			斜边
		//		opposite			对边
		
		// **** --------------------------------------
		
		/**
		 * 通过邻边边长/斜边边长=角的余弦值
		 * @param adjacentSide 邻边边长.
		 * @param hypotenuse 斜边边长.
		 * @return 余弦值.
		 * 
		 */		
		public static function getCosineByAdjacentSideAndHypotenuse(
			adjacentSide:Number,hypotenuse:Number):Number
		{
			return adjacentSide / hypotenuse ;
		}
		/**
		 * 通过角度来获得邻边边长和斜边边长的比例. 
		 * @param degrees 角度.
		 * @return 
		 * 
		 */		
		
		public static function getAdjacentSideAndHypotenusePercentByDegrees(
			degrees:Number):Number
		{
			
			return Math.cos(degrees * Math.PI / 180 );
		}
		/**
		 * 通过弧度来获取邻边边长和斜边边长的比例.  
		 * @param radians 弧度.
		 * @return 
		 * 
		 */		
		public static function getAdjacentSideAndHypotenusePercentByRadians(
			radians:Number):Number
		{
			
			return Math.cos(radians);
		}
		/**
		 * 通过对边边长/斜边边长=角的正弦值 
		 * @param opposite 对边长
		 * @param hypotenuse 斜边长
		 * @return 正弦值.
		 * 
		 */		
		public static function getSineByOppositeAndHypotenuse(
			opposite:Number,hypotenuse:Number):Number
		{
			return opposite / hypotenuse ;
		}

	}
}